<%@ page import="weaver.general.*" %>
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%--
 Created on 2019-12-18
 Copyright (c) 2001-2019 泛微软件
 泛微协同商务系统，版权所有。
 功能 请假申请流程
--%>
<script type="text/javascript">
    var qjlxfid = "field7904";//请假类型 事假13
    var njfid = "field9527";//剩余可用法定年假
    var yxbjfid = "field19309";//剩余可用带薪资病假
    var flnjfid = "field9590";//剩余可用福利年假
    var qjtsfid = "field7905";//请假天数 事假13
    var jsrqfid = "field7902";//结束日期
    var ksrqfid = "field7900";//开始日期
    var qjrfid = "field7898";//请假人
    jQuery(document).ready(function () {
        if (!(WfForm.getBaseInfo().nodeid == 344)) return; //判断节点id

        window.checkCustomize = function () {
            var qjrxmFieldId = WfForm.convertFieldNameToId("qjrxm");//请假人姓名
            var qsrqFieldId = WfForm.convertFieldNameToId("qsrq");//起始日期
            var qssjFieldId = WfForm.convertFieldNameToId("qssj");//起始时间
            var jsrqFieldId = WfForm.convertFieldNameToId("jsrq");//结束日期
            var jssjFieldId = WfForm.convertFieldNameToId("jssj");//结束时间
            var qjtsFieldId = WfForm.convertFieldNameToId("qjts");//请假天数
            fieldIdObj = {
                "qjrxmFieldId": qjrxmFieldId,
                "qsrqFieldId": qsrqFieldId,
                "qssjFieldId": qssjFieldId,
                "jsrqFieldId": jsrqFieldId,
                "jssjFieldId": jssjFieldId,
                "qjtsFieldId": qjtsFieldId,
            }

            var fieldIdArr = Object.values(fieldIdObj);

            var name = "请假申请_";
            var qjrxmSpan = WfForm.getBrowserShowName(fieldIdObj.qjrxmFieldId);
            var qsrqValue = WfForm.getFieldValue(fieldIdObj.qsrqFieldId);
            var qssjSpan = WfForm.getSelectShowName(fieldIdObj.qssjFieldId);
            var jsrqValue = WfForm.getFieldValue(fieldIdObj.jsrqFieldId);
            var jssjSpan = WfForm.getSelectShowName(fieldIdObj.jssjFieldId);
            var qjtsValue = WfForm.getFieldValue(fieldIdObj.qjtsFieldId);
            var qjlxValue = WfForm.getSelectShowName("field7904");
            var bt = (name + qjrxmSpan + " " + qsrqValue + " " + qssjSpan + " - " + jsrqValue + " " + jssjSpan + " " + qjlxValue + "  " + qjtsValue + " 天");
            WfForm.changeFieldValue("field-1", { value: bt });

            var flag = true;
            //新增假期规则 不能请半天
            var qjlx4 = WfForm.getFieldValue("field7904");
            if (qjlx4 == '2' || qjlx4 == '3' || qjlx4 == '4' || qjlx4 == '5' || qjlx4 == '6' || qjlx4 == '15' || qjlx4 == '14') {
                if (parseFloat(WfForm.getFieldValue("field7905")) != parseInt(WfForm.getFieldValue("field7905"))) {
                    alert("婚假、丧假、产假、工伤假、护理假、防疫假无法请半天");
                    return false;
                }
            }
            //新增产假规则  第二年没有维护法定假时  报错
            //正式 12789  测试  field12780
            // if( WfForm.getFieldValue("field7904") == '4' && WfForm.getFieldValue("field12789")==''){
            if (WfForm.getFieldValue("field7904") == '4' && WfForm.getFieldValue("field12780") == '') {
                alert("未维护第二年国假，请联系管理员");
                return false;
            }
            if (!setSj()) {
                return false;
            }//允许请假规则
            //产假 请长假 没有排班所以过滤掉产假 特殊事假
            if (WfForm.getFieldValue("field9518") == '' && (
                WfForm.getFieldValue("field7904") != '4' && WfForm.getFieldValue("field7904") != '14')) {
                alert("请假日期没有排班");
                return false;
            }
            if (WfForm.getFieldValue("field7905") * 1.00 <= 0) {
                alert("请假天数不能小于等于0");
                return false;
            }
            //M职级 不能在线发起请假
            if (!yepd()) {
                return false;
            }//所有假期请假天数不能大于可用天数
            if (!pdCf()) {
                return false;
            }//请假期日期不能重合及重复

            if (!pdhj()) {
                return false;
            }//判断婚假
            return flag;
        }
    });
    //7. 所有假期请假天数不能大于可用天数；
    function yepd() {
        var kyts = WfForm.getFieldValue("field7913");//可用天数
        var txkyts = WfForm.getFieldValue("field7924");//调休可用小时数
        var qjts = WfForm.getFieldValue("field7905");//请假天数
        var qjlx = WfForm.getFieldValue(qjlxfid);//请假类型
        var ksrq = WfForm.getFieldValue(ksrqfid);//开始日期
        var flag = false;
        if (kyts != '' && qjts != '') {
            //年假在最后一个考勤周期支持跨年  分开判断
            WfForm.changeFieldValue("field10086", { value: "" });
            if (qjlx == 0 || qjlx == 1) {

                //请年假 跨年
                if (ksrq.substring(5, 10) >= '12-18') {
                    //判断当年 年假有没有使用完
                    if (kyts * 1.00 > 0 && (qjts * 1.00 > kyts * 1.00)) {
                        alert2("当年年假未使用完，无法使用下一年年假", "field7905", ksrqfid);
                        return false;
                        // alert("当年年假未使用完，无法使用下一年年假");

                        // WfForm.changeFieldValue("field7905", { value: "" });
                        // WfForm.changeFieldValue(ksrqfid, { value: "" });
                    }
                    //当年年假使用完 判断下年年假是否够
                    else if (kyts * 1.00 == 0) {
                        if (WfForm.getFieldValue("field10085") * 1.00 > qjts * 1.00) {
                            flag = true;
                        } else {
                            alert2("当前年假，下一年年假不足", "field7905", ksrqfid);
                            return false;
                            // alert("当前年假，下一年年假不足");
                            // WfForm.changeFieldValue("field7905", { value: "" });
                            // WfForm.changeFieldValue(ksrqfid, { value: "" });
                        }
                    }
                }
                //非跨年 走正常判断逻辑
                else {
                    if (qjts * 1.00 > kyts * 1.00) {
                        alert2("请假天数不能大于可用天数", "field7905", ksrqfid);
                        return false;
                    }
                }
            }
            //非跨年情况
            else if (qjlx == 8) {
                if (qjts * 8.00 > txkyts * 1.00)//field7924
                {
                    alert("调休假额度不足");
                    return false;
                } else {
                    return true;
                }
            }
            else {
                if (qjts * 1.00 > kyts * 1.00) {
                    alert2("请假天数不能大于可用天数", "field7905", ksrqfid);
                    return false;
                }
            }
        } else {
            alert("请假天数不能大于可用天数");
            return false;
        }
        //改变是否跨年字段 用于后台处理扣减逻辑
        if (flag) {
            WfForm.changeFieldValue("field10086", { value: "1" });
        } else {
            WfForm.changeFieldValue("field10086", { value: "" });
        }
        return true;
    }

    //请假期日期不能重合及重复
    function pdCf() {
        if (WfForm.getFieldValue("field9528") != '') {
            alert2("请假期日期不能重合及重复", ksrqfid, jsrqfid);
            return false;
        }
        return true;
    }
    //用于请婚假时做判断：最多请2次，3个考勤周期内使用，2次申请工作日不能大于10天如超出，系统给出提示（总天数不能大于13天，工作日天数不能大于10天）；
    //婚假判断
    function pdhj() {
        // WfForm.bindFieldChangeEvent(qjlxfid + "," + qjtsfid, function (obj1, id1, value1) {
        var flag = true;
        if (WfForm.getFieldValue(qjlxfid) == '2') {
            var ts = WfForm.getFieldValue(qjtsfid);//请假天数
            //如果天数大于13直接报错
            if (ts != '') {
                if (ts * 1.00 > 13) {
                    alert1("婚假总天数不能大于13天", jsrqfid);
                    flag = false;
                } else {
                    var url = "/interface/xuch/hjpd.jsp?ksrq=" + WfForm.getFieldValue(ksrqfid) +
                        "&jsrq=" + WfForm.getFieldValue(jsrqfid) + "&sc=" + ts + "&userId=" + WfForm.getFieldValue(qjrfid);
                    $.ajax({
                        type: "GET",
                        url: url,
                        async: false,
                        success: function (res) {
                            result = res * 1.00;
                            if (result == 1) {
                                alert2("婚假只能3个考勤周期内使用", jsrqfid, ksrqfid);
                                flag = false;
                            }
                            else if (result == 2) {

                                alert2("婚假2次申请工作日不能大于10天", jsrqfid, ksrqfid);
                                flag = false;
                            }
                            else if (result == 3) {

                                alert2("婚假最多请2次", jsrqfid, ksrqfid);
                                flag = false;
                            }
                            else if (result == 4) {

                                alert2("婚假总天数不能大于13天", jsrqfid, ksrqfid);
                                flag = false;
                            }
                        },
                        error: function (e) {
                            alert("wrong!");
                        }
                    });
                }
            }
        }
        // })
        return flag;
    }

    // 事假：有年假不允许请事假，如还有年假的情况下使用事假，给出提示；
    // 事假不能超过15天，超过需要请特殊事假；
    function setSj() {
        var isflag = true;
        // WfForm.bindFieldChangeEvent(qjlxfid + "," + qjtsfid + "," + njfid + "," + flnjfid, function (obj1, id1, value1) {
        var qjlxval = WfForm.getFieldValue(qjlxfid);
        var qjtsval = WfForm.getFieldValue(qjtsfid);
        var njval = WfForm.getFieldValue(njfid) * 1.00;
        var flnjval = +WfForm.getFieldValue(flnjfid) * 1.00;
        var yxbjval = WfForm.getFieldValue(yxbjfid) * 1.00; //剩余可用带薪资病假
        // if(qjlxval!=''&&qjtsval!=''&&njval!=''&&flnjval!='')
        if (qjlxval == '13') {
            if (qjtsval > 15) {
                isflag = false;
                WfForm.changeFieldValue(qjlxfid, { value: "" });
                alert1("事假不能超过15天，超过需要请特殊事假", qjlxfid);
            }
            else if ((njval + flnjval) > 0) {
                isflag = false;
                // WfForm.changeFieldValue(qjlxfid, { value: "" });
                alert1("有年假不允许请事假", qjlxfid);
            }
        }
        else if (qjlxval == '1' && njval > 0) {
            isflag = false;
            // WfForm.changeFieldValue(qjlxfid, { value: "" });
            alert1("在还有法定年假的情况下，需要先用完法定年假，再使用福利年假", qjlxfid);
        }

        else if (qjlxval == '9' && yxbjval > 0) {
            isflag = false;
            // WfForm.changeFieldValue(qjlxfid, { value: "" });
            alert1("在还有带薪资病假的情况下，需要先用完带薪资病假，再使用无薪病假", qjlxfid);
        }
        return isflag;
        // })
    }

    //弹窗改造
    function alert1(text, fid) {
        alert(text);

    }
    function alert2(text, fid1, fid2) {
        alert(text);

    }


</script>
